package br.ucb.bsiLab2.dominio;

import java.util.List;

import javax.swing.table.AbstractTableModel;

import fi.foyt.foursquare.api.entities.Category;
import fi.foyt.foursquare.api.entities.CompactVenue;

public class PontoDeInteresseTableModel extends AbstractTableModel {
	private static final long serialVersionUID = 1L;
	private List<CompactVenue> pontosDeInteresse;
	private String[] colunas;
	
	public PontoDeInteresseTableModel(List<CompactVenue> listPOI){
		this.pontosDeInteresse = listPOI;
		colunas = new String[] {"Nome", "Categoria", "Contato", "ID"};
	}


	@Override
	public int getColumnCount() {
		return this.colunas.length;
	}

	@Override
	public int getRowCount() {
		return this.pontosDeInteresse.size();
	}

	@Override
	public Object getValueAt(int linha, int coluna) {
		CompactVenue poi = pontosDeInteresse.get(linha);
		switch(coluna){
			case 0: return poi.getName();
			case 1: {
				String categoria = "";
				for (Category c : poi.getCategories()){
					categoria = categoria.concat(c.getName() + ", ");
				}
				categoria = categoria.replace(categoria.charAt(categoria.lastIndexOf(",")), ' ');
				return categoria;
			}
			case 2:{
				StringBuffer contatos = new StringBuffer();
				if(poi.getContact().getEmail() != null && !poi.getContact().getEmail().isEmpty()){
					contatos.append(poi.getContact().getEmail()); 
					contatos.append(" ");
				}
				if(poi.getContact().getFacebook() != null && !poi.getContact().getFacebook().isEmpty()){
					contatos.append(poi.getContact().getFacebook()); 
					contatos.append(" ");
				}
				if(poi.getContact().getPhone() != null && !poi.getContact().getPhone().isEmpty()){
					contatos.append(poi.getContact().getPhone()); 
					contatos.append(" ");
				}
				if(poi.getContact().getTwitter() != null && !poi.getContact().getTwitter().isEmpty()){
					contatos.append(poi.getContact().getTwitter()); 
					contatos.append(" ");
				}
				return contatos.toString().trim();
			}
			case 3: return poi;
			default: return null;
		}
	}
	
	public String getColumnName(int coluna) {
	    return colunas[coluna] ;
	  }

}
